package com.doubi.utils;

import java.util.Date;

/**
 * 功能描述：SQL工具类
 * @author MrDoubi 2019-06-20 16:51
 */
public class SQLUtils {

    /**
     * 功能描述：组装SQL的Like
     * @author  MrDoubi 2019-06-20 16:55
     * @param column        列名
     * @param param         参数
     * @return              返回组装后的SQL
     */
    public static String SQLLike(String column, String param) {
        StringBuilder sb = new StringBuilder();
        if (DataUtil.isNotEmpty(param)) {
            sb.append(" and ").append(column).append(" like '%").append(
                    param.trim()).append("%' ");
        }
        return sb.toString();
    }

    /**
     * 功能描述：组装SQL的等于
     * @author  MrDoubi 2019-06-20 16:57
     * @param column        列名
     * @param param         参数
     * @return              返回组装后的SQL
     */
    public static String SQLEq(String column, String param) {
        StringBuilder sb = new StringBuilder();
        if (DataUtil.isNotEmpty(param)) {
            sb.append(" and ").append(column).append("='").append(param.trim())
                    .append("' ");
        }
        return sb.toString();
    }

    /**
     * 功能描述：组装SQL的等于
     * @author  MrDoubi 2019-06-20 16:57
     * @param column        列名
     * @param param         参数
     * @return              返回组装后的SQL
     */
    public static String SQLEq(String column, Integer param) {
        StringBuilder sb = new StringBuilder();
        if (DataUtil.isNotEmpty(param)) {
            sb.append(" and ").append(column).append("=").append(param)
                    .append(" ");
        }
        return sb.toString();
    }

    /**
     * 功能描述：组装SQL的大于或等于
     * @author  MrDoubi 2019-06-20 16:57
     * @param column        列名
     * @param param         参数
     * @return              返回组装后的SQL
     */
    public static String SQLMin(String column, Integer param) {
        StringBuilder sb = new StringBuilder();
        if (DataUtil.isNotEmpty(param)) {
            sb.append(" and ").append(column).append(">=").append(param)
                    .append(" ");
        }
        return sb.toString();
    }

    /**
     * 功能描述：组装SQL的小于或等于
     * @author  MrDoubi 2019-06-20 16:57
     * @param column        列名
     * @param param         参数
     * @return              返回组装后的SQL
     */
    public static String SQLMax(String column, Integer param) {
        StringBuilder sb = new StringBuilder();
        if (DataUtil.isNotEmpty(param)) {
            sb.append(" and ").append(column).append("<=").append(param)
                    .append(" ");
        }
        return sb.toString();
    }

    /**
     * 功能描述：组装SQL的最小时间
     * @author  MrDoubi 2019-06-20 16:57
     * @param column        列名
     * @param param         参数
     * @return              返回组装后的SQL
     */
    public static String SQLMinDate(String column, Date param) {
        StringBuilder sb = new StringBuilder();
        if (DataUtil.isNotEmpty(param)) {
            sb.append(" and ").append(column).append(">='").append(DateTimeUtil.dateToStr(param, "yyyy-MM-dd 00:00:00"))
                    .append("' ");
        }
        return sb.toString();
    }

    /**
     * 功能描述：组装SQL的最大时间
     * @author  MrDoubi 2019-06-20 16:57
     * @param column        列名
     * @param param         参数
     * @return              返回组装后的SQL
     */
    public static String SQLMaxDate(String column, Date param) {
        StringBuilder sb = new StringBuilder();
        if (DataUtil.isNotEmpty(param)) {
            sb.append(" and ").append(column).append("<='").append(DateTimeUtil.dateToStr(param, "yyyy-MM-dd 23:59:59"))
                    .append("' ");
        }
        return sb.toString();
    }

    /**
     * 功能描述：将英文逗号拼接的参数转换成带单引号的英文都好拼接的参数
     * @author  MrDoubi 2019-06-20 17:04
     * @param parm          参数
     * @return              返回处理后的参数
     */
    public static String sqlForIn(String parm) {
        String[] p = parm.split(",");
        StringBuilder returnstring = new StringBuilder("'");
        for (int i = 0; i < p.length; i++) {
            if (i == 0)
                returnstring = new StringBuilder("'" + p[i] + "'");
            else
                returnstring.append(",'").append(p[i]).append("'");
        }
        return returnstring.toString();
    }

}
